package com.fosu.utils;

/**
 * Desription
 * 自动将超过一千的大数转换为k、w结尾
 * @author manno
 * @date 2020/11/1
 */
public class NumFormatter
{
    public static String formatNum(Integer num){
        StringBuilder formatStr = new StringBuilder();
        /**若num小于1000就直接返回*/
        if(num < 1000)
        {
            formatStr.append(num);
            return formatStr.toString();
        }
        /**记录千位数字*/
        int k = 0;
        /**记录万位数字*/
        int w = 0;
        /**记录亿为数字*/
        int e = 0;
        for(int i = num ; i >= num ; i--)
        {
            if(num >= 100000000)
            {
                e++;
                num -= 100000000;
            }else {
                break;
            }
        }
        for(int i = num ; i >= num ; i--)
        {
            if(num >= 10000)
            {
                w++;
                num -= 10000;
            }else {
                break;
            }
        }
        for(int i = num ; i >= num ; i--)
        {
            if(num >= 1000)
            {
                k++;
                num -= 1000;
            }else {
                break;
            }
        }
        /**如果超过1亿就以亿为单位显示*/
        if(e >= 1)
        {
            formatStr.append(e).append("e");
        }
        /**如果超过10万就以万为单位显示*/
        else if(w >= 10)
        {
            formatStr.append(w).append("w");
        }
        /**如果小于十万就以千为单位显示*/
        else {
            formatStr.append(w * 10 + k).append("k");
        }

        return formatStr.toString();
    }
}
